iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 7
0

https://ithelp.ithome.com.tw/upload/images/20200924/20129694iAUeXShVQp.jpg

我們先分析一下昨天製造的模型
https://ithelp.ithome.com.tw/upload/images/20200922/20129694cZMylzfrDj.jpg

模型裡的所有淡藍色圖示都代表用戶能互動的組件。

長方形圖示代表行為(例如遊覽到網頁,按登入按鈕等。)
https://ithelp.ithome.com.tw/upload/images/20200922/20129694mN6KU4U18N.jpg

菱形代表組件能有不同選擇
https://ithelp.ithome.com.tw/upload/images/20200922/20129694S4nqDWktMF.jpg

箭頭代表組件可能的結果(被選擇,不被選擇,有效,空白等。)
https://ithelp.ithome.com.tw/upload/images/20200922/20129694PQMJSza5Ql.jpg

綠色長方形是正面測試通過條件(positive assertion)
https://ithelp.ithome.com.tw/upload/images/20200922/20129694IdCJUN0ABC.jpg

紅色長方形是負面測試通過條件(error cases)
https://ithelp.ithome.com.tw/upload/images/20200922/20129694ZHTYnKU4LU.jpg

所以這個模型的流程是:

  1. 遊覽到登入網頁
    1. 如果這個用戶上一次有選擇remember me那這個用戶的username就會自動顯示。
    2. 如果沒有的話用戶需要自己輸入username。
  2. username有可能的狀況是,有效,無效,鎖住,空白。
  3. 再來就是輸入密碼,密碼可能是有效,無效,空白。
  4. 如果username和密碼都是正確的話,用戶按登入時就可以登入,反之無法登入。
  5. 在成功登入的情況下如果remember me的選項被選擇,那系統就會記住用戶名,反之不會。

兩個放在一起比較的時候我們可以看得到用圖示表示能夠更清楚表達程式的邏輯。因為只需要照著箭頭走就好了,不需要在腦中一直記著上一步是什麼。

接下來我們來看這個模型如何自動生成test case和BDD。讓開發和測試工作更加容易。

模型程式裡有不同coverage level能讓我們生成不同級別的測試覆蓋率(test coverage)。

最基本的會確保每一個組件(all nodes)都有被測試到,而最複雜的會確保每一個有可能的組合(all possible paths)都被測試到。
minimum coverage

我們先選擇最基本的覆蓋率,我們可以看到系統自動幫我們生成了三個不同的test case:

  1. remember me被選擇
    https://ithelp.ithome.com.tw/upload/images/20200922/20129694OO44evAf5I.jpg

  2. remember me不被選擇
    https://ithelp.ithome.com.tw/upload/images/20200922/201296947Nrw6Ss3xe.jpg

  3. 密碼不正確
    https://ithelp.ithome.com.tw/upload/images/20200922/201296941U7rmKLsej.jpg

而如果選擇最複雜的話,系統幫我們生成了13個不同的情況,確保每一個不同箭頭的組合都有被測試到。
full coverage

有了這些組合以後,我們就可以把這些組合輸出到管理軟體,連結到我們的user story裡。

這裡可以看到我們的user story號碼是131
rally user story

回到模型程式,我們可以選擇要把模型邏輯export到其他程式。
export

然後選擇要export到哪一個user story,同時可以選擇要附上圖檔,BDD,測試用的數據等。
export options

Export後我們可以看到13個test case
test case list

而每一個test case都有圖檔和BDD連結,能讓所有人都清楚了解這一個test case的邏輯是什麼
model path as attachment

BDD內容

Scenario: Test-3-valid username-valid password-remember me selected  
  Given Josh is a registered user
  When Josh navigates to the Login page
  And he or she enters 'enabled EQUALS 1 AND account_non_expired EQUALS 1 AND account_non_locked EQUALS 1 AND credentials_non_expired EQUALS 1 AND rolename EQUALS ROLE_USER' into the login Username field
  And he or she enters 'Demo123!' into the login Password field
  And he or she submits the login request
  And he or she clicks the Remember Me checkbox
  Then Josh verifies he or she is at the Home page  
  And he or she verifies the remember-me cookie is present

但是我們可能不需要所有的不同組合,所以我們可以用大頭針選擇我們想要測試的組件,讓程式只深層需要測試這一個組件的test cases。
pin remember me

generate for pin

resulting paths

現在我們的程式邏輯,測試,BDD都有了。明天我們就開始來看開發和continuous integration方面需要的能力吧。

< 上一篇 Day06 - User Story & Requirements Modeling (Part 2)
> 下一篇 Day08 - Source code management


上一篇
Day06 - User Story & Requirements Modeling (Part 2)
下一篇
Day08 - Source code management
系列文
DevOps平台的能力架構19
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言